package com.atguigu.jxc.dao;

import com.atguigu.jxc.entity.Goods;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @description 商品信息
 */
@Repository
public interface GoodsDao {


    String getMaxCode();

    //分页查询
    List<Goods> getGoodsList(@Param("page") Integer page,
                             @Param("rows") Integer rows,
                             @Param("goodsCode") String goodsCode,
                             @Param("goodsName") String goodsName,
                             @Param("goodsTypeId") String goodsTypeId);

    //获取商品分类名称
    String getGoodsTypeName(String goodsTypeId);

    //获取商品库存数量
    Integer getSaleTotal(String goodsId);

    //总条数
    Integer getGoodsTotal();

    //添加
    int save(Goods goods);

    //修改
    int updateById(Goods goods);

    //商品详情
    Goods getInfoById(String goodsId);

    //删除
    int deleteById(String goodsId);

    //分页获取无库存商品信息
    List<Goods> getInvenPage(@Param("page") Integer page,
                             @Param("rows") Integer rows,
                             @Param("goodsName") String goodsName,
                             @Param("goodsCode") String goodsCode);

    //无库存商品总数
    int getInvenTotal();

    //有库存商品分页
    List<Goods> getHashPage(@Param("page") Integer page,
                            @Param("rows") Integer rows,
                            @Param("goodsName") String goodsName,
                            @Param("goodsCode") String goodsCode);

    //有库存商品总数
    int getHashTotal();

    //根据商品id  修改数量和库存
    int updateInfo(@Param("goodsId") String goodsId,
                   @Param("inventoryQuantity") Integer inventoryQuantity,
                   @Param("purchasingPrice") Double purchasingPrice);

    //删除库存  修改库存数量
    int updateInven(@Param("goodsId") String goodsId);

    //警告库存商品
    List<Goods> getListAlarm();
}
